#ifndef __MESH_DEFS_H__
#define __MESH_DEFS_H__

#include <vector>

namespace steam
{

	namespace coal
	{
		class IFace;
		class IMeshBuffer;
		class IMaterial;

		enum VertexType
		{
			VERTEX_ONLY = 0,
			VERTEX_WITH_NORMAL,
			VERTEX_WITH_TEXCOORD,
			VERTEX_WITH_TEXCOORD_AND_NORMAL,
			VERTEX_INVALID
		};

		enum FaceType
		{
			TRIANLGE_FACE = 0,
			QUAD_FACE
		};

		typedef struct { float r, g, b; } Color3f;

		typedef struct { float x, y, z; } Vertex;

		typedef struct { float x, y, z; } Normal;

		typedef struct { float s, t; } TexCoord;

		typedef std::vector<int> IndexVector;

		typedef std::vector<Vertex> VertexVector;

		typedef std::vector<Normal> NormalVector;

		typedef std::vector<TexCoord> TexCoordVector;

		typedef std::vector<IFace*> FaceVector;

		typedef std::vector<IMaterial*> MaterialVector;

		typedef std::vector<IFace*>::const_iterator ConstFaceIterator;

		typedef std::vector<IMeshBuffer*> MeshBufferVector;

		typedef std::vector<IMeshBuffer*>::const_iterator ConstMeshBufferIterator;

	}
}

#endif